/*
let done = true

const isItDoneYet = new Promise((resolve, reject) => {
  if (done) {
    const workDone = '这是创建的东西'
    resolve(workDone)
  } else {
    const why = '仍然在处理其他事情'
    reject(why)
  }
}).then(res => console.log("res ==> ", res))
*/

// ----------
/*
const fs = require('fs')

const getFile = (fileName) => {
  return new Promise((resolve, reject) => {
    fs.readFile(fileName, (err, data) => {
      if (err) {
        reject(err)  // 调用 `reject` 会导致 promise 失败，无论是否传入错误作为参数，
        return        // 且不再进行下去。
      }
      resolve(data)
    })
  })
}

getFile('./text.txt')
.then(data => console.log(data))
.catch(err => console.error(err))
*/

// ----------------

// const fetch = require("node-fetch")

// const status = response => {
//   if (response.status >= 200 && response.status < 300) {
//     return Promise.resolve(response)
//   }
//   return Promise.reject(new Error(response.statusText))
// }

// const json = response => response.json()

// fetch('https://api.github.com/users/ruanyf')
//   .then(status)    // 注意，`status` 函数实际上在这里被调用，并且同样返回 promise，
//   .then(json)      // 这里唯一的区别是的 `json` 函数会返回解决时传入 `data` 的 promise，
//   .then(data => {  // 这是 `data` 会在此处作为匿名函数的第一个参数的原因。
//     console.log('请求成功获得 JSON 响应', data)
//   })
//   .catch(error => {
//     console.log('请求失败', error)
//   })

// -----------------------
const fetch = require("node-fetch")

const f1 = fetch('https://api.github.com/users/ruanyf2')
const f2 = fetch('https://api.github.com/users/ruanyf')

Promise.all([f1, f2])
  .then(res => {
    console.log('结果的数组', res)
  })
  .catch(err => {
    console.error(err)
  })


// Promise.race()